package com.company;

import java.sql.*;

public class TestDriver {
    public Connection getConn(){
        Connection conn = null;

        // (0) 准备数据库连接的相关参数
        //数据库的驱动类的名字 包路径名
        //Mysql8版本的驱动类的包路径名
        String strDriverNameMysql8 = "com.mysql.cj.jdbc.Driver";
        //Mysql5版本的驱动类的包路径名
        String strDriverNameMysql5 = "com.mysql.jdbc.Driver";
        ////Oracle版本的驱动类的包路径名
        String strDriverNameOracle = "oracle.jdbc.driver.OracleDriver";


        //数据库服务器的连接串
        // 连接串中的 localhost 127.0.0.1 ip地址 服务器名 表示服务器的访问路径  3306 mysql数据库服务器监听的端口号 job为数据库名
        //Mysql8版本连接字符串
        String strURLMysql8 = "jdbc:mysql://localhost:3306/job?" +
                "useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Hongkong&allowPublicKeyRetrieval=true";
        //Mysql5版本连接字符串
        String strURLMysql5 = "jdbc:mysql://localhost:3306/job?useUnicode=true&characterEncoding=utf8";
        //Oracle版本连接字符串
        String strURLOracle = "jdbc:oracle:thin:@localhost:1521:orcl";

        //登录用户名和吗，密码
        String strUserName = "root";
        String strUserPsw = "Hkemmmm";

        try {
            // (1) 加载数据库驱动类；【使用反射】【可以省略】
            //如果jvm中没有数据库驱动类Driver实例对象，会自动根据连接串类型进行加载数据库驱动类的实例.
            //Class.forName(strDriverNameMysql8);

            // (2) 通过DriverManager类的静态方法获取数据库的连接对象Connection；
            conn = DriverManager.getConnection(strURLMysql8,strUserName,strUserPsw);
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }


        return conn;
    }


    /**
     * 数据库查询
     * @param strSql    数据库查询语句
     * @return  ResultSet查询结果集
     */
    public ResultSet query(String strSql){
        ResultSet resultSet = null;

        try {
            // (3) 通过数据库连接对象获取查询器 Statement ；
            Statement statement = getConn().createStatement();

            // (4) 准备数据库的SQL语句，用于处理业务逻辑；
            //数据库语句 通过方法传入

            // (5) 使用查询器执行SQL语句，如果是查询操作，则会返回一个ResultSet结果集；
            resultSet = statement.executeQuery(strSql);

        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }


        return resultSet;
    }
}
